function query(path) {
    //取？之后的字符串（不包括？）
    var index = path.indexOf('?')
    if (index == -1) {
        return {}
    }

    var queryStr = path.substr( index+ 1)
    //urlDecode
    queryStr = littleUrl.decode(queryStr)

    //返回结果
    var query = {}

    //以&分割字符串
    queryArr = queryStr.split('&')
    queryArr.forEach(item => {
        //以=分割字符串
        queryItem = item.split('=')
        //如果没有等号的，键和值一样；
        //如果只有一个等号，正常输出；
        //如果是其他情况，不做处理
        if (queryItem.length == 1) {
            query[queryItem[0]] = queryItem[0]
        } else if (queryItem.length == 2) {
            query[queryItem[0]] = queryItem[1]
        }
    })

    return query
}

function uuid() {
    var s = [];
    var hexDigits = "0123456789abcdef";
    for (var i = 0; i < 36; i++) {
        s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
    }
    s[14] = "4";  // bits 12-15 of the time_hi_and_version field to 0010
    s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1);  // bits 6-7 of the clock_seq_hi_and_reserved to 01
    s[8] = s[13] = s[18] = s[23] = "-";

    var uuid = s.join("");
    return uuid;
}

function getJsonLength(obj) {
    var len = 0
    for (var key in obj) {
        len ++
    }
    return len
}

littleUrl = {
    // public method for url encoding
    encode : function (string){
        return escape(this._utf8_encode(string));
    }
    ,
    // public method for url decoding
    decode : function (string){
        return this._utf8_decode(unescape(string));
    }
    ,
    // private method for UTF-8 encoding
    _utf8_encode : function (string){
        string = string.replace(/\r\n/g,"\n");
        var utftext = "";
        for (var n = 0; n < string.length; n++){
            var c = string.charCodeAt(n);
            if (c < 128){
                utftext += String.fromCharCode(c);
            }
            else
            if((c > 127) && (c < 2048)){
                utftext += String.fromCharCode((c >> 6) | 192);
                utftext += String.fromCharCode((c & 63) | 128);
            }
            else{
                utftext += String.fromCharCode((c >> 12) | 224);
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                utftext += String.fromCharCode((c & 63) | 128);
            }
        }
        return utftext;
    }
    ,
    // private method for UTF-8 decoding
    _utf8_decode : function (utftext){
        var string = "";
        var i = 0;
        var c = c1 = c2 = 0;
        while ( i < utftext.length ){
            c = utftext.charCodeAt(i);
            if (c < 128){
                string += String.fromCharCode(c);
                i++;
            }
            else
            if((c > 191) && (c < 224)){
                c2 = utftext.charCodeAt(i+1);
                string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                i += 2;
            }
            else{
                c2 = utftext.charCodeAt(i+1);
                c3 = utftext.charCodeAt(i+2);
                string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                i += 3;
            }
        }
        return string;
    }
}

module.exports = {
    query,
    uuid,
    getJsonLength,
    urlEncode: littleUrl.encode,
    urlDecode: littleUrl.decode
}